小弟已經進行過二值化操作得到了感興趣的區域, 想從去榆中隨機取五個點并且獲取坐標,思路是首先得到全部為255的像素點,然后再從得到的集合中隨機選取,但是。。。。但是不知道從哪下手啊,求解
。。。求大神幫忙~~~
uj5u.com熱心網友回復:
“感興趣的區域” 都是矩形 ?uj5u.com熱心網友回復:
僅供參考:#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int d[6];
int i,n,a,b,t;
int c,j;
void main() {
srand(time(NULL));
printf("shuffle 0..n-1 demo\n");
for (n=1;n<=5;n++) {/* 測驗1~5個元素 */
printf("_____n=%d_____\n",n);
j=1;
for (c=1;c<=n;c++) j=j*c;/* j為n! */
j*=n*2;
for (c=1;c<=j;c++) {/* 測驗n*2*n!次 */
for (i=0;i<n;i++) d[i]=i;/* 填寫0~n-1 */
for (i=n;i>0;i--) {/* 打亂0~n-1 */
a=i-1;b=rand()%i;
if (a!=b) {t=d[a];d[a]=d[b];d[b]=t;}
}
printf("%04d:",c);
for (i=0;i<n;i++) printf("%d",d[i]);
printf("\n");
}
}
printf("shuffle 1..n demo\n");
for (n=1;n<=5;n++) {/* 測驗1~5個元素 */
printf("_____n=%d_____\n",n);
j=1;
for (c=1;c<=n;c++) j=j*c;/* j為n! */
j*=n*2;
for (c=1;c<=j;c++) {/* 測驗n*2*n!次 */
for (i=1;i<=n;i++) d[i]=i;/* 填寫1~n */
for (i=n;i>1;i--) {/* 打亂1~n */
a=i;b=rand()%i+1;
if (a!=b) {t=d[a];d[a]=d[b];d[b]=t;}
}
printf("%04d:",c);
for (i=1;i<=n;i++) printf("%d",d[i]);
printf("\n");
}
}
}
uj5u.com熱心網友回復:
int iIndex = (int)((double)rand() / (double)RAND_MAX //0~1* iMaxCell) ?
uj5u.com熱心網友回復:
遍歷影像,判斷點的像素值是否是白色,是則保存對應坐標,可用容器vector或者List,然后RNG隨機取5個元素不就可以了uj5u.com熱心網友回復:
你用的是opencv的話就for(int I=0 ; I < width;i++)
{
for(int j=0 ; j < height;j++)
{
if(255 == cvGet2D(img,j,i)[0])
vetcor.push_back(cvPoint(i,j));
}
}
其它的影像可以用資料指標
for(int I=0 ; I < width;i++)
{
for(int j=0 ; j < height;j++)
{
if(255 == ImgData +*(j*imgdatawidth + channel * i))
vetcor.push_back(Point(i,j));
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/88165.html
標籤:圖形處理/算法
