2016年7月23日 星期六

Opencv函數記憶體釋放

在看別的記憶體問題的時候看到的
mark

應該算是舊版的OpenCV才會有這個問題


http://wenku.baidu.com/view/326b7107bed5b9f3f90f1c7d.html

1065353216 在c語言

變數的值一直跳到這個數字 1065353216

後來覺得直接GOOGLE這個數字比較快

大概就是動態記憶體配值的時候,型態跟變數不合的問題

Why is 1.0f in C code represented as 1065353216 in the generated assembly?

Returning a 1.0f gives me 1065353216

2016年7月5日 星期二

桌面圖示跟開始消失時的處理方法

叫出工作管理員

關掉 處理程序中的所有explorer.exe

然後 檔案 新工作 輸入 explorer.exe 確定

桌面就出現了

參考:http://mhying.pixnet.net/blog/post/91681618-解決電腦桌面檔案及圖示消失的方法

2016年7月1日 星期五

-1.#IND -1#INF代表什麼意思?

在做一些矩陣運算的時候,會有算不出結果的時候,C沒有像MATLAB會對於這些數值運算給予更多資訊,這不是程式語言的問題,應該是IDE幫使用者做多少事情

基本上數值運算確實有一些本來就是無解的情況,程式也只是一個大型的計算機,一樣算不出來的,只是也沒辦法給你更多的訊息,只能從現有的資訊去推測,然後把原始運算輸出來看是哪種無解

不過如果自己的計算過程不存在這樣的情形,就反過來檢查哪邊寫了不該出現的算式了

這些錯誤訊息,基本上都表示NAN(未定義或者不可表示)

可以直接呼叫函式判斷是不是這兩種
需要#include <math.h>
isnan() 
輸出為1是NAN的情況,0則是正常數值

另一個有在文章看到的是isinf() 針對判斷無限大的,應該可以針對無窮大

針對無解的情況應該只有分成這兩種了NAN跟INF

OutputMeaning
1#INFPositive infinity
-1#INFNegative infinity
1#SNANPositive signaling NaN
-1#SNANNegative signaling NaN
1#QNANPositive quiet NaN
-1#QNANNegative quiet NaN
1#INDPositive indefinite NaN
-1#INDNegative indefinite NaN


第一次搜尋一下後面代表的意義

isnan - test for a NaN

NAN 維基/WIKI

What does -1.#IND mean?: A survey of how the Visual C runtime library prints special floating point values

IEEE floating-point exceptions in C++

What do 1.#INF00, -1.#IND00 and -1.#IND mean?

 [浮點數] C/C++ 浮點數特殊值

20.5.2 Infinity and NaN

What Every Computer Scientist Should Know About Floating-Point Arithmetic

C語言中的nan和inf使用

2016年6月11日 星期六

iOS9 ReplayKit 螢幕畫面錄影

又要紀錄資料...之前用過KINECT錄影

這次要用在平板上面,ANDROID的很多現成的

iOS就是麻煩,對岸網友寫的

iOS9 ReplayKit录制视频

2016年6月6日 星期一

sprintf 用法

基本用法大概知道,修改一些多重資料夾下的檔案的時候,在尋找比較詳細的資料

看來看去還是對岸的好用,超級詳細...所有相關的都列出來給你看,要修改甚麼先整個看一遍,大概就找的到了
台灣這邊寫的太攏統了,從printf下去講,說用法一樣,理解觀念很快,也很快可以寫出基本範例,可是要修改一些東西的時候,找不到參考資料

sprintf_百度百科



當然這個百度百科不只可以找sprintf,其他的也都可以找

2016年5月31日 星期二

line官方帳號使用

line官方帳號使用測試完成

紀錄一下

1.申請這個app,對!它的名字很奇怪,有個@在裡面

android版
iOS版
2.使用方案如網址中內容,重點摘要
           2.1免費版只能發送1000則/月
           2.2免費版對部分申請者有做限制
           2.3免費版無法指定ID,ID為隨機決定

3.開始申請,需要LINE帳號驗證跟信箱驗證

2016年5月30日 星期一

txt 最後一行開始讀取反轉

我要做的事情是將txt的最後一行變成第一行
倒數第二行變成第二行這樣的方式將整個檔案反轉過來

想想是覺得不難啦
但真的在實作的時候,一點想法也沒有

開始google找到幾個類似的
(不得不抱怨一下,百度的最佳解答竟然不能執行.........)

做的事情跟這篇文章一樣
[問題] 有沒有將文章倒序過來的軟體? 
這邊的解答整理一下

1.[複製]->開啟EXCEL->[貼上]->[資料]->[排序]->[由Z到A]
2.linux tac指令 : tac file
3.fseek移到檔案尾巴+逆向讀取fgets()
[問題] 文字讀檔  從尾巴開始一行一行讀

好像各種方法都有點問題...我喜歡寫程式不是因為會做出甚麼偉大的程式,而是因為程式可以簡化生活中一些重複性的動作
不過當程式不會寫的時候,回去做重複性的動作(雖然真的很不喜歡這樣)

目前只有完成1而已...唉...(2感覺只是執行指令,3可能要去看一下那兩個function,晚點寫吧...)
而且...1還有bug.......直接看結果吧


目前沒有要用這樣的程式,這個是測試資料而已,所以這樣做還可以...可是當資料多的時候,EXCEL的BUG就很致命,而且...資料太大...即使是自己寫的C程式應該都還是面臨記憶體問題

大概有兩個值得思考的點,有空測試一下2的那個指令

3.........等我跑完論文程式要來寫阿...


其他相關資料:
[問題] C語言 讀檔 從第二行開始

sscanf/scanf特殊用法

C语言读取文件如何读取最后一行?用fseek表示。如果最后一行有文字也有数字如何读取数字?例如最后

C++读取txt文件如何能够从最后一行往前读?
跑了沒有效果的程式碼...

2016年5月29日 星期日

劉美君老師的英文課

英語語法的溝通功能 Making Sense of English
給大學部的課程,很簡單明暸

中文口語語法與教學 Spoken Mandarin and Instruction

語法與構詞 Syntax and Morphology

...

其實還有很多,劉美君老師出了好多線上公開課阿

適合理工人的英文課
追求的是為甚麼,而不是比誰背的多
主要是在文法啦

單字...還是量為王
雖然初期是比誰背的多,後期還是比誰對這些單字的理解更多

另外,會注意到這位老師是因為我買了她的書

英文文法有道理!:重新認識英文文法觀念
這就是上面第一個課程的書,也是我買的書,書跟課程內容教材一模一樣
買了這本書看到交大,我就想到了開放式課程,一搜尋果然有

英文寫作有訣竅!:三句話翻轉英文寫作困境
這本書還沒買以後有機會再買

2016年5月28日 星期六

Opencv wmv 檔案無法讀取 播放 的 問題

Opencv讀取wmv檔案時有時候會遇到問題,通常MP4跟AVI檔案不會有問題,網路上通常是說是dll檔的問題,改個名就好。

在opencv安裝路徑下的\sources\3rdparty\ffmpeg資料夾,如C:\opencv249\sources\3rdparty\ffmpeg。

如果當初安裝設定是用32位元,則將資料夾中的opencv_ffmpeg.dll檔案名修改為opencv_ffmpeg2410.dll,如果是opencv2.4.9,則改成opencv_ffmpeg249.dll。其他版本依此類推。
如果是64位元系統,那就修改opencv_ffmpeg_64.dll檔案名為opencv_ffmpeg2410_64.dll。

並在環境變數中的系統變數進行修改,當初安裝OpenCV環境設定的時候應該有加入一個路徑的變量。參考的文章大多是用Path,我之前是另外用了LibraryPath。

如果不知道自己用哪個的話,把這個加到C:\opencv249\sources\3rdparty\ffmpeg
加到Path中,並在專案的屬性中的函式庫連結補上 $(Path)。

忘記當初設定的話,在之前專案的屬性可以找到,也可以稍微看一下系統變數,不過會隨著呼叫的libary越多,裡面寫的東西越多...不好找就是。



因為我原本命名的是LibraryPath
但到現在也忘了,看到才想到
晚點換到LibraryPath裡面,就可以省略掉Path。

目前可以成功播放了

只是覺得這個bug好像是原本寫死的dll檔的檔名寫錯了(程式內吧...
然後大概因為開源的關係,所以能夠抓出來。


參考資料: http://blog.csdn.net/heyijia0327/article/details/44034671
該文章另有python的簡單改法。

2016年5月26日 星期四

Opencv影像無法顯示

群裡的問題

假設程式碼都正確,但是影像無法顯示

因為沒有加上waitkey(數字)
數字可以填0及任意正數,0代表等代下一個指令,其他代表停頓時間

那加了為甚麼就可以停頓?
消息循環的關係

消息循环

Opencv抓取螢幕畫面

Opencv抓取螢幕畫面?
一樣群裡的問題

應該是不行,opencv只能抓取camera跟影片

抓取螢幕畫面應該要用到系統指令(我的推測

所以google了下

在 Windows 下抓取螢幕畫面的方法

另外directshow應該也可以(這邊還沒看)

open-source-directshow-screen-desktop-capture-source-filter

LIST OF AVAILABLE DIRECTSHOW SCREEN CAPTURE FILTERS


Opencv跟MFC結合

重新回到群裡練功,順便將OPENCV,IP,CV,ML重新學習

群裡提出的問題
照著做,做出來效果不對
http://jingyan.baidu.com/article/f71d60375ddd411ab641d1e3.html

基本上照著做可以做出來
不過裡面漏提了一個

將DrawPicToHDC(image, IDC_ShowImg);
中的IDC_ShowImg改成IDC_STATIC

基本這樣就可以了
不過這個版本只有最基礎的顯示,而且是針對button寫死的方法
可能可以研究一下開檔的寫法
晚點寫個新版出來

問這個問題的人交流下的過程,說希望可以研究個opencv版的小畫家...跟他討論分析是可行的,大部分都有現成的function只是呼叫跟組成一個大程式而已

2016年4月29日 星期五

台灣影像跟視覺相關機會

http://www.programmer-club.com.tw/ShowSameTitleN/c/42566.html

求職前看過的討論串
不過時過境遷,環境大不同

台灣公司其實

其實最近很多外商在台灣設立研發中心,除了AI之外,也開了部分電腦視覺相關的缺
而台灣公司從htc VR部門到一些ic設計公司都有缺,雖然相較於軟韌可能少上很多,不過機會仍然在

等我資深一點再來寫的詳細點

2016年4月24日 星期日

C之txt讀檔最後一行多讀一次

這個問題稍微花了我一點時間想了下
我多跑了幾個txt檔,其中一個txt檔就是會出錯

後來看了一下讀進來的資料,發現最後一筆重複讀入
這個txt跟其他的差別只在最後一行的資料後方多了一格空格
使用feof()或者eof()就會產生這個問題

後來上網看了一下
有一篇寫的算詳細,先紀錄一下
c++ ifstream 读文件 最后一行读两次

2016年4月18日 星期一

C輸出csv檔案

因為目前要做的東西比較複雜,就想說來用一下CSV檔案,到時候再用EXCEL打開就可以進行要做的操作
雖然我覺得也可以自己畫圖輸出,不過這個可以等我比較有空再弄(以前是畫過圖,也不難啦!就是目前需要比較精美的圖表給別人看...自己畫的很糟糕,以後慢慢修吧)

#include<stdio.h>
#include<stdlib.h>

int main(){
FILE *fp;
fp=fopen("test.csv","w");

for(int i=0;i<100;i++){
for(int j=0;j<100;j++){
fprintf(fp,"%d,",i);
}
fprintf(fp,"\n");//換一行
//fprintf(fp,"\r\n");//跳一行

}
fclose(fp);
return 0;
}

寫了測試以後,發現跟...txt根本一樣,差別只在於檔名改掉了
原本很認真的google看到一堆人在問換行怎麼換...嗯... /n

這篇如果只有上面內容也太廢了...
看一下別人寫的好功能 libcsv
是CSV的library且符合規格C89?


Q1.輸出可以了,那輸入呢?
(待補)

Q2.CSV是一種格式,那他的定義呢?
CSV中文維基百科
CSV英文維基百科
中文維基下面的一些資料
B2B(商業對商業)應用的CSV-1203文件格式規範(英文)
如何:逗號分隔值(CSV)文件格式(英文)
RFC 4180:CSV文件格式的RFC規範(英文)













2016年4月17日 星期日

a004: 文文的求婚

#include <iostream>
using namespace std;

int main() {
int  s;
 while(cin >> s){
if(s%4==0 && s%100!=0)
cout << "閏年"<< endl;
else if(s%400==0)
cout << "閏年"<< endl;
else
cout << "平年"<< endl;
 }
 return 0;
}



cout和printf有什麼差別?
C++输入cout与输出cin 





錯誤的程式碼v0.1
#include <iostream>

using namespace std;



int main() {

string s;

 while(cin >> s){

if(s%4==0 && s%100!=0)

 cout << "閏年"<< endl;

else if(s%400==0)

 cout << "閏年"<< endl;

else

 cout << "平年"<< endl;

 }

 return 0;

}

非常直覺的拿範例程式來改寫了這樣的程式碼

得到了以下的結果
/2761251/code_2761251.cpp: In function ‘int main()’:
/2761251/code_2761251.cpp:7:5: error: no match for ‘operator%’ (operand types are ‘std::string {aka std::basic_string}’ and ‘int’)
 if(s%4==0 && s%100!=0)
     ^
/2761251/code_2761251.cpp:7:15: error: no match for ‘operator%’ (operand types are ‘std::string {aka std::basic_string}’ and ‘int’)
 if(s%4==0 && s%100!=0)
               ^
/2761251/code_2761251.cpp:9:10: error: no match for ‘operator%’ (operand types are ‘std::string {aka std::basic_string}’ and ‘int’)
 else if(s%400==0)
          ^


為甚麼會這樣呢?
因為輸入是string
改成int就可以了

不過這個時候有一個問題要思考了
string如何轉int?
[C&++] 字串整數轉換
上面這篇是呼叫現成的函數
如果自己寫的話,聽說要看一下 C++ Primer



C語言算術運算子
運算子
功能
範例
+
a+b
-
a-b
*
a*b
/
a/b
%
取餘數
a%b













2016年3月15日 星期二

[開發紀錄]Vim的Hello World

vim使用
至上次安裝好後,還沒有寫一個程式來測試一下,按照慣例來個Hello World吧

輸入vim就可進入
$vim 檔名.c           創立某個檔名的c file
i可以開始編輯

程式碼部份
#include<stdio.h>
int main(){
        printf("Hello World\n");
        return 0;
}
執行指令
$ gcc hello.c -o hello
$ ./hello
顯示結果
 Hello World

存檔離開 :wq

離開vim的操作都是要按ESC
vim is a modal editor. Hit the ESC key to get into Normal (command) mode then type :q and press Enter.
To quit without saving any changes, type :q! and press Enter.
 原文:How do I quit from Vi?
VIM命令退出



第九章、vim 程式編輯器 

完整參考資料:康乃爾大學教材第一章

2016年3月9日 星期三

[C語言]define 中比大小

求最大值和最小值

#define MAX( x, y ) ( ((x) > (y)) ? (x) : (y) )

#define MIN( x, y ) ( ((x) < (y)) ? (x) : (y) )


參考網站:http://stenlyho.blogspot.tw/2007/04/c_04.html

2016年3月7日 星期一

[開發紀錄]unable to mount root fs on unknown-block(0 0)

unable to mount root fs on unknown-block(0 0)

這個問題可能是我之前一直灌不起來的原因吧?
因為之前沒有紀錄

不過上次我重灌的時候,我用一些很神奇的方法
最後還是把Ubuntu灌起來

雖然我覺得我解決的方法很奇怪
簡單紀錄一下

基本上是Windows跟Ubuntu雙系統的情況下
然後我先灌Windows再灌Ubuntu

每次出現這個問題,我的D槽在Windows灌好時,都需要被重新格式化,也是因此我猜測,未分配空間可能也需要格式化

看到這個,我就回Windows去重新檢測硬碟
再來電腦管理」的「磁碟管理」去將未分配空間重新格式化
簡單參考:
一點通 - 如何在 Windows 7 中動態調整硬碟空間 (MVP 撰寫)

然後比較有人再認真分析這個問題的
Thread: kernel panic-not syncing: VFS: unable to mount root fs on unknown block(0,0)

Thread: Kernel panic - not syncing: VFS: unable to mount root fs on unknown-block(0,0)

[問題] Unable to mount root fs on unknown-block(0,0)


2016年2月22日 星期一

[開發紀錄]雙系統重灌win7+Unbuntu 14.04

以前從來不寫開發紀錄的,但是現在發現同樣的事情再做的時候,要是有留下筆記多方便(雖然我承認Google是最好的共筆筆記庫)
今年重新出發,也開始寫下開發紀錄

暨三年前灌過win7+Ubuntu 12.04
但是在去年弄一些東西的時候,手賤把Ubuntu移除
就出了很大的問題

就是沒辦法就地重新安裝

一直遇到
uncompression error system halted 
這個問題

不過今年因為課程需求,再拿出來重玩(就是明天要用阿!!!)
發現雙系統下單一系統重灌的情況,滿多解法的
應該是不難解的...當時懶的處理加上都用實驗室電腦,就暫時放生它了

今年就重新安裝
也讓自己用歸零的心態重新開始學習
畢竟當時將win7拿來下bt也掛的差不多了
主要重灌步驟參考
(我主要憑著三年前印象大概踹一下的,但三年前是看這篇文章的)

裝好win7再裝Ubuntu時有再次出現
uncompression error system halted 
我跑回win7把硬碟重新整理一下(可是它整理起來也沒有變更)
再灌一次Ubuntu就可以了
總之,問題消失了(好像不應該是這樣...)

然後,就跳到灌好之後吧!
畢竟這個過程不難

注音鍵盤是我記得Ubuntu一直讓我覺得很難用的地方
最近出來了一個gcin聽說很強大
安裝步驟請參考(要看文章比較清楚喔)

這樣就差不多了,可以使用Ubuntu還可以用中文加關鍵字下去Google了

接著來更新一下,畢竟安裝的東西是舊的
進入terminal
輸入更新的指令吧!
補充資料:

最後,裝一下可以寫程式的東西vim
如何在 Linux Ubuntu 上安裝 Vim 文字編輯器
裡面會提到有個git命令,因為我是新系統,什麼都沒有
基本上這樣安裝
sudo apt-get install git
git完整說明請見 How To Install Git on Ubuntu 14.04


過程中我遇到一些問題,就可以直接PrintScreen這個鍵截圖存檔
詳細說明:Ubuntu截圖方法



P.S.0安裝過程總是乏味的,將週四週五要參加的短期課程教材拿來邊預習邊安裝
同時也想著論文的程式要怎麼改

P.S.1我的Win7連driver都還沒重新安裝(包括那個網路的driver...)

P.S.2手上弄到一個OSX 10.6的DMG檔案
晚點用虛擬機來安裝一下
這個就不單獨搞一個系統出來,畢竟我的筆電才500GB而已

2016年1月7日 星期四

坊間一大堆課程,報名課程之前該有的心態

我在大陸貼吧看到的文章
覺得寫得很好
我覺得適用於各種心靈成長、勵志、權謀、NLP、宗教、口才、人際溝通、股票投資、催眠、教練技術
特別是短期、速成課程這種
上課有價值的:語言類、才藝類,其他還是算了吧!真的有價值的,都是很深奧的學問,自己慢慢研究吧
尤其跟錢財有關的,投資類,我有好的投資項目為何要給你?只因為想要你手上的錢
其實催眠很多都講說學了可以成為催眠師,你要當催眠師幹嘛?跟現在教你的人一樣去開班授課?那他怎麼可能盡心盡力教你,不培養一個自己的敵人?
==============================================
曾经有人问我!想去上课,又不知道去不去。问我怎么办?
我说。我不能说服你去上课,但是我绝对有办法说服你不去上课!
他问:你怎么说服?
我说:一个老师的广告,无非是吊人胃口加夸张,至于效果,如果十个学生,学了,有十个都成功了。那这个老师是神,如果七八九个成功了,这个老师是仙,如果一半个成功了,这个老师是高手!不管怎么样?你都要去上这个课!
但是,如果十个人去上课,十个人都说好,那么这个老师是成功的。你记得,觉得好,觉得有用,跟你真的用的好,用的出来是两个概念!我们崇拜神佛,知道神佛法力伟大,跟对你有没有好处是两个概念!
我关键想说的是:如果一个老师做广告,十个学员,只有一两个说非常好,非常棒,然后老师拿出来当例子,不是人家天份好,就是托。而你看了这一两个大浪淘沙的例子就去上课,也行。至于你能不能成为这一两个难说,但是你一定会成为剩下的七八九个人。你会反驳我!凭什么我就不能成为十个中一两个?我想说,就凭你混到社会上都玩不转了,想学技巧,从这点,你就一定是炮灰!
如果你实在有钱,丰富兴趣爱好,是不错的选择哦!!!!!!!!!

ADGuard